package dynamic;

import java.lang.reflect.Field;

/**
 * @Author:Cjj
 * @Date:2025/4/30
 */
public class MyReflectDemo1 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException {
        /**
         * 获取class对象的三种方式:
         * 1.Class.forName("全类名")
         * 2.类名.class
         * 3.对象.getClass()
         */

        //1.第一种方式
        //全类名:包名+类名
        //最为常用的
        Class<?> aClass = Class.forName("src.main.java.dynamic.Student");


        //2.第二种方式
        //一般更多的是当作参数进行传递
        Class clazz2=Student.class;


        //3.第三种方式
        //当我们已经有了这个类的对象时,才可以使用
       Student s = new Student();
        Class clazz3 = s.getClass();

        System.out.println(clazz2==clazz3);


        Field[] fields = aClass.getDeclaredFields();
        for (Field field : fields) {
            System.out.println(field);
        }

        //获取单个的成员变量
      Field gender=  aClass.getField("name");
        System.out.println(gender);


        Class<?> type = gender.getType();
        System.out.println(type);

        //获取成员变量记录的值
       Student s1= new Student("zhang",23);
        Object value = gender.get(s1);
        System.out.println(value);
    }



}
